home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1 Issue 2 / PDCD-1 - Issue 02.iso / _utilities / utilities / 001 / qzapsrc / !QZap_c_QUserdragb < prev    next >
Encoding:
Text File  |  1994-11-01  |  2.1 KB  |  78 lines

  1. /*
  2.  * Userdragbox.c
  3.  */
  4.  
  5. #define QUserdragbox
  6.  
  7. #include "QMain.h"
  8. #include "QUserdragbox.h"
  9. #include "QFrceselrdrw.h"
  10. #include "QInitialise.h"
  11. #include "QDataload.h"
  12.  
  13. #include "os.h"
  14.  
  15. void Userdragbox(wimp_block *Block)
  16. {
  17.   int i, j, view, mine, nl;
  18.   wimp_message message;
  19. /*  int selmin, selmax, OSelstart, OSelend;
  20.  
  21.   selmin=Block->dragged.final.y0;
  22.   selmax=Block->dragged.final.y1;
  23.   Block->open.w=Drag_w;
  24.   wimp_get_window_state((wimp_window_state *) &(Block->open));
  25.   OSelstart=Selectionstart;
  26.   OSelend=Selectionend;
  27.   Selectionstart=(0-Block->open.yscroll+(Block->open.visible.y1-selmax));
  28.   Selectionend=(0-Block->open.yscroll+(Block->open.visible.y1-selmin));
  29.   ForceSelectionRedraw(OSelstart, OSelend);*/
  30.   Mask=Mask | wimp_MASK_NULL;
  31.   switch (dragtype) {
  32.   case drag_NONE:
  33.     break;
  34.   case drag_SAVE:
  35.     wimp_get_pointer_info(&(Block->pointer));
  36.     mine=FALSE;
  37.     for (view=0; view<MaxViewers; view++)
  38.         if (Block->pointer.w==Viewers[view]) mine=TRUE;
  39.     if (Block->pointer.w==SaveHandle) mine=TRUE;
  40.     if (!mine) {
  41.       message.size=256;
  42.       message.your_ref=0;
  43.       message.action=message_DATA_SAVE;
  44.       message.data.data_xfer.w=Block->pointer.w;
  45.       message.data.data_xfer.i=Block->pointer.i;
  46.       message.data.data_xfer.pos=Block->pointer.pos;
  47.       if (Savetype == Selected) {
  48.         nl=Selectionend-Selectionstart;
  49.       } else {
  50.         nl=Loadedsize/4;
  51.       }
  52.       /* number of instructions at 60 chars per line */
  53.       message.data.data_xfer.est_size=nl*60;
  54.       message.data.data_xfer.file_type=0xFFF;
  55.       for (i=0, j=0; filenameptr[i]>31; i++) {
  56.         message.data.data_xfer.file_name[j]=filenameptr[i];
  57.         if ((filenameptr[i]==':') || (filenameptr[i]=='.')) {
  58.           j=0;
  59.         } else {
  60.           j++;
  61.         }
  62.       }
  63.       message.data.data_xfer.file_name[j]=0;
  64.       wimp_send_message_to_window(wimp_USER_MESSAGE_RECORDED,
  65.           &message, Block->pointer.w, Block->pointer.i);
  66.       saveref=message.my_ref;
  67.     }
  68.     break;
  69.   case drag_SELECTION:
  70.     Drag_w=(wimp_w) NULL;
  71.     break;
  72.   default:
  73.     break;
  74.   }
  75.   dragtype=drag_NONE;
  76. }
  77.  
  78.